export function loadView(view) {
  return () => import(`@/view${view}.vue`);
}

export function getOther(list) {
  return list.map((item) => {
    let newItem = {};
    if (item.thisData.menuType === 'C') {
      newItem = { ...item, ...item.thisData };
      if (newItem.isHideen === 0) {
        newItem.isHiddenName = "隐藏";
      } else if (newItem.isHideen === 1) {
        newItem.isHiddenName = "显示";
      }
      newItem.path = newItem.url;
      newItem.component = loadView(newItem.fileUrl);

      if (item.childList && item.childList.length > 0) {
        newItem.childList = getOther(item.childList);
      }
    }
    return newItem;
  }).filter(item => Object.keys(item).length > 0); // 只保留非空对象，即menuType为'C'的项目
}

// 该函数用于将多层级的菜单数组扁平化为一维数组
// 参数 arr 是一个包含多层嵌套结构的菜单数组
// 返回值是将所有层级的菜单项都放入同一个数组中的结果
export function flattenMenuArray(arr) {
  // 存储最终的扁平化结果
  let result = [];

  // 内部递归函数,用于遍历所有层级
  function recurse(items) {
    items.forEach((item) => {
      // 将当前项加入结果数组
      result.push(item);
      // 如果当前项有子菜单,则递归处理子菜单
      if (item.childList && item.childList.length > 0) {
        recurse(item.childList);
      }
    });
  }

  recurse(arr);
  return result;
}

export const AllMenuFlag = ['/control', '/duban', '/xuncha', '/zhonghe', '/yichan'] // 所有菜单